using System.Collections.Generic;

namespace pal.SvnConf.Core
{
    //Defines the behaviour of an SVN configuration file facade which supporting user, group and acl operations
    public interface ISvnConfigurationProvider
    {
        void Initialize();
        void CreateUser(string userName, string password);

        //Should probably be replaced with a Visitor
        List<User> Users { get; }
        List<Group> Groups { get; }
        List<Acl> Acls { get; }
        List<ISecurityPrincipal> AllMembers { get; }

        void SetPassword(string userName, string newPassword);
        void DeleteUser(string userName);
        void CreateGroup(string groupName);
        void DeleteGroup(string groupName);
        void SaveChanges();
        Group FindGroupByName(string groupName);
        void CreateGroup(string groupName, List<ISecurityPrincipal> members);
    }
}